package com.chinairi.mall.dao;

import com.chinairi.mall.model.ProjectPlanReqDetail;
import com.chinairi.mall.model.ProjectPlanReturn;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.chinairi.mall.model.ProjectPlanReturnDetail;
import com.chinairi.mall.service.modelobject.ProjectPlanReturnMO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * Mapper 接口
 * </p>
 *
 * @author gsl
 * @since 2020-10-24
 */
public interface ProjectPlanReturnMapper extends BaseMapper<ProjectPlanReturn> {

    /**
     * 批量插入领料详情
     *
     * @param projectPlanReturnDetailList
     */
    void batchInsertReturnDetail(@Param("projectPlanReturnDetailList") List<ProjectPlanReturnDetail> projectPlanReturnDetailList);

    /**
     * 获取退料详情的数量
     * 为了更新采购计划中的领料数
     *
     * @param pprId
     * @return
     */
    List<ProjectPlanReturnMO> selectMatNum(@Param("pprId") String pprId);

    /**
     * 根据需求计划ID和物料ID查询每条物料的已领用数量
     *
     * @param planReqId
     * @param returnMatDbId
     * @return
     */
    List<ProjectPlanReqDetail> selectReqMatNum(@Param("planReqId") String planReqId, @Param("returnMatDbId") List<String> returnMatDbId);

    /**
     * 批量更新需求计划中的物料领料数量
     *
     * @param projectPlanReqDetailList
     */
    void batchUpdatePlanReqDetailNum(@Param("projectPlanReqDetailList") List<ProjectPlanReqDetail> projectPlanReqDetailList);

    /**
     * 根据需求计划ID查询所有未处理的退料单
     *
     * @param planReqId
     * @return
     */
    List<String> selectReturn(@Param("planReqId")String planReqId);

    /**
     * 根据退料单号，批量查询所有的详情
     * @param pprIdList
     * @return
     */
    List<String> selectBatchByPprId(@Param("pprIdList") List<String> pprIdList);

    /**
     * 根据退料单id查询退料详情列表
     * @param pprId 退料单id
     * @return 退料详情列表
     */
    List<ProjectPlanReturnDetail> getListByPPRId(String pprId);
}
